<?php

/* Copyright (c) 2012 Universidad Del Atlántico

  Autor

  Carlos Fuentes

  /* All rights reserved.

  /* Redistribution and use in source and binary forms, with or without
  /* modification, are permitted provided that the following conditions
  /* are met:
  /* 1. Redistributions of source code must retain the above copyright
  /*    notice, this list of conditions and the following disclaimer.
  /* 2. Redistributions in binary form must reproduce the above copyright
  /*    notice, this list of conditions and the following disclaimer in the
  /*    documentation and/or other materials provided with the distribution.
  /* 3. Neither the name of copyright holders nor the names of its
  /*    contributors may be used to endorse or promote products derived
  /*    from this software without specific prior written permission.

  /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  /* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  /* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  /* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
  /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  /* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  /* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  /* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  /* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  /* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  /* POSSIBILITY OF SUCH DAMAGE.


 */

/**
 *
 * @author UNIATLANTICO
 */
class ViewsInterface {

    const ERROR_PARAMETER = 'Faltan Parametros para ejecutar Función ?';
    const ERROR_FUNCTION = 'función ? no encontrada';
    const ERROR_NO_FUNCTION = 'Función no Especificada';

    public function execute($function = null, $parameter = null, $position = null) {
        if ($function == null) {
            return $this->send_error($function,self::ERROR_NO_FUNCTION);
        } else

        if (in_array($function, get_class_methods(get_class($this)))) {

            if ($this->need_params($function)) {

                if ($parameter == null) {
                    return $this->send_error($function, self::ERROR_PARAMETER);
                } else {
                    return $this->$function($parameter);
                }
            } else {
                return $this->$function();
            }
        } else {
            return $this->send_error($function, self::ERROR_FUNCTION);
        }
    }

    private function need_params($func) {
        ////$firephp = FirePHP::getInstance(true);
        ////$firephp->log($func, "need_params");
        $reflection = new ReflectionMethod(get_class($this), $func);
        return $reflection->getNumberOfParameters();
    }

    public function send_error($function, $error, $position = 'content') {
        $error = str_replace('?', $function, $error);
        $log=new Template();
        $log->assign("div",$position);
        $log->assign("error",$error);
        $log->draw_string("error");
    }

    public function returnPage() {
        
    }

}

?>
